//GA OMP onemax
//$Id: onemax_ga_shc_omp.cpp 718 2012-06-04 17:02:38Z Oleg.Bulychov@gmail.com $
#include "stdafx.h"

#include "projects/onemax/shc/onemax_shc.h"
#include "projects/onemax/ga/onemax_ga.h"
#include "solvers/hybrids/ga_shc/ga_shc_omp.h"
#include "src/heo/include/run_omp.h"

typedef OneMax_Problem  TProblem;
typedef OneMax_Solution TSolution;
typedef OneMax_Config   TConfig;
typedef OneMax_History  THistory;

typedef Environment<TProblem, TSolution, TConfig, THistory>     TEnvironment;

typedef struct GA_Traits<TEnvironment, validator_ga_shc_tag>    TTraits;
typedef GA_OMP<TTraits>                                         TSolver;

static struct ga_register
{
    ga_register()
    {
        TSolver::register_Selection< ga::selection::tournament_selection >();
        TSolver::register_Selection< ga::selection::roulette_selection >();
        TSolver::register_Selection< ga::selection::random_selection >();

        TSolver::register_Operator< ga::inter_operator::crossover>();
        TSolver::register_Operator< ga::inter_operator::mutation>();
        TSolver::register_Operator< ga::inter_operator::shc>();
    }
} reg;


int main(int argc, char* argv[])
{
    return Run_OMP<TSolver>(argc, argv);
}
//EOF!
